// Dart 程序可以抛出任何非 null 对象， 不仅限 Exception 和 Error 对象。

import 'package:flutter_test/flutter_test.dart';

main() {
  //try catch
  test("testError", () {
    try {
      throw "asdf";
    } catch (e) {
      print("e is $e");
    }

    try {
      throw Exception("adf");
    } catch (e) {
      print("e is $e");
    }

    try {
      throw Exception("adf");
//      throw "asdf";
      throw OutOfLlamasException();
    } on OutOfLlamasException {
      // 一个特殊的异常
      print("out of lamas");
    } on Exception catch (e) {
      // 其他任何异常
      print('Unknown exception: $e');
      //重新抛出异常
//      rethrow;
    } catch (e, s) {
      //第二个为堆栈信息 ( 一个 StackTrace 对象 )。
      // 没有指定的类型，处理所有异常
      print('Something really unknown: $e');

      print('s: $s');
    } finally {
      print("do in finally");
    }
  });
}

class OutOfLlamasException implements Exception {}
